/***************************************************************************/
/* Procedimiento:  Capt_PermisoMovimientoInsertar
/* Descripcion:   Insertar o Modifica una fila en la tabla Capt_PermisoMovimiento
/* Parametros:    ?InfoParametros
/*                pTransaccion. Numero identificador de la Transaccion
/*                pMensaje. Mensaje de comfirmacion o excepcion
/* Comentarios:         
/****************************************************************************/

PROCEDURE  Capt_PermisoMovimientoInsertarModificar(pnidDocumento NUMBER, pnidAvisoArribo NUMBER, 
						pnidBuque NUMBER, pbandera VARCHAR2, ppuerto_registro VARCHAR2, 
						ptoneladas_Brutas NUMBER, ptoneladas_Netas NUMBER, pcapitan VARCHAR2, 
						ppuerto_procedencia VARCHAR2, pdes_movimiento VARCHAR2, pIMO VARCHAR2, 
						peslora NUMBER, pmanga NUMBER, pcalado_Proa NUMBER, 
						pcalado_Popa NUMBER, pfecha_Movimiento VARCHAR2, pnombre_Buque VARCHAR2, 
						pnaviera VARCHAR2, pmuelle_Origen VARCHAR2, pmuelle_Destino VARCHAR2, 
						pemp_Lanchas VARCHAR2, pnum_Lanchas NUMBER, ppuerto_Reg VARCHAR2, 
						pcodigo_Llamada VARCHAR2, pnum_Oficial NUMBER, pnum_Omi NUMBER, 
						pcolocacion_Quilla NUMBER, ppuesto_Marcha NUMBER, pTRB NUMBER, 
						pTRN NUMBER, pconstructores VARCHAR2, pclase VARCHAR2, 
						pmotor VARCHAR2, ppropietarios VARCHAR2, poperador VARCHAR2, 
						ppuntal NUMBER, peslora_Total NUMBER, peslora_Perpendiculares NUMBER, 
						paltura NUMBER, pluz NUMBER, ppuerto_Destino VARCHAR2, 
						pemp_Amarradores VARCHAR2, pfolio_Permiso_Entrada VARCHAR2, ptipo_Buque VARCHAR2, 
						ptipo_Carga VARCHAR2, pcodigo_Pbip VARCHAR2, pcolor_Casco VARCHAR2, 
						pemp_Remolcadores VARCHAR2, pnum_Remolcadores NUMBER, pemp_Pilotos VARCHAR2, 
						pnum_Pilotos NUMBER, pnum_Amarradores NUMBER, ppeso_Muerto NUMBER, 
						pcalado_Construccion NUMBER, ptipo_Cabo VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Capt_PermisoMovimiento
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Capt_PermisoMovimiento
	           (nid, nidDocumento, nidAvisoArribo, 
						nidBuque, bandera, puerto_registro, 
						toneladas_Brutas, toneladas_Netas, capitan, 
						puerto_procedencia, des_movimiento, IMO, 
						eslora, manga, calado_Proa, 
						calado_Popa, fecha_Movimiento, nombre_Buque, 
						naviera, muelle_Origen, muelle_Destino, 
						emp_Lanchas, num_Lanchas, puerto_Reg, 
						codigo_Llamada, num_Oficial, num_Omi, 
						colocacion_Quilla, puesto_Marcha, TRB, 
						TRN, constructores, clase, 
						motor, propietarios, operador, 
						puntal, eslora_Total, eslora_Perpendiculares, 
						altura, luz, puerto_Destino, 
						emp_Amarradores, folio_Permiso_Entrada, tipo_Buque, 
						tipo_Carga, codigo_Pbip, color_Casco, 
						emp_Remolcadores, num_Remolcadores, emp_Pilotos, 
						num_Pilotos, num_Amarradores, peso_Muerto, 
						calado_Construccion, tipo_Cabo)
    VALUES     (seq_Capt_PermisoMovimiento.nextval, pnidDocumento, pnidAvisoArribo, 
						pnidBuque, pbandera, ppuerto_registro, 
						ptoneladas_Brutas, ptoneladas_Netas, pcapitan, 
						ppuerto_procedencia, pdes_movimiento, pIMO, 
						peslora, pmanga, pcalado_Proa, 
						pcalado_Popa, to_date(pfecha_Movimiento,'DD/MM/YYYY HH24:MI:SS'), pnombre_Buque, 
						pnaviera, pmuelle_Origen, pmuelle_Destino, 
						pemp_Lanchas, pnum_Lanchas, ppuerto_Reg, 
						pcodigo_Llamada, pnum_Oficial, pnum_Omi, 
						pcolocacion_Quilla, ppuesto_Marcha, pTRB, 
						pTRN, pconstructores, pclase, 
						pmotor, ppropietarios, poperador, 
						ppuntal, peslora_Total, peslora_Perpendiculares, 
						paltura, pluz, ppuerto_Destino, 
						pemp_Amarradores, pfolio_Permiso_Entrada, ptipo_Buque, 
						ptipo_Carga, pcodigo_Pbip, pcolor_Casco, 
						pemp_Remolcadores, pnum_Remolcadores, pemp_Pilotos, 
						pnum_Pilotos, pnum_Amarradores, ppeso_Muerto, 
						pcalado_Construccion, ptipo_Cabo);
  ELSE
    UPDATE Capt_PermisoMovimiento
    SET    nidDocumento=pnidDocumento, nidAvisoArribo=pnidAvisoArribo, 
		nidBuque=pnidBuque, bandera=pbandera, puerto_registro=ppuerto_registro, 
		toneladas_Brutas=ptoneladas_Brutas, toneladas_Netas=ptoneladas_Netas, capitan=pcapitan, 
		puerto_procedencia=ppuerto_procedencia, des_movimiento=pdes_movimiento, IMO=pIMO, 
		eslora=peslora, manga=pmanga, calado_Proa=pcalado_Proa, 
		calado_Popa=pcalado_Popa, fecha_Movimiento=to_date(pfecha_Movimiento,'DD/MM/YYYY HH24:MI:SS'), nombre_Buque=pnombre_Buque, 
		naviera=pnaviera, muelle_Origen=pmuelle_Origen, muelle_Destino=pmuelle_Destino, 
		emp_Lanchas=pemp_Lanchas, num_Lanchas=pnum_Lanchas, puerto_Reg=ppuerto_Reg, 
		codigo_Llamada=pcodigo_Llamada, num_Oficial=pnum_Oficial, num_Omi=pnum_Omi, 
		colocacion_Quilla=pcolocacion_Quilla, puesto_Marcha=ppuesto_Marcha, TRB=pTRB, 
		TRN=pTRN, constructores=pconstructores, clase=pclase, 
		motor=pmotor, propietarios=ppropietarios, operador=poperador, 
		puntal=ppuntal, eslora_Total=peslora_Total, eslora_Perpendiculares=peslora_Perpendiculares, 
		altura=paltura, luz=pluz, puerto_Destino=ppuerto_Destino, 
		emp_Amarradores=pemp_Amarradores, folio_Permiso_Entrada=pfolio_Permiso_Entrada, tipo_Buque=ptipo_Buque, 
		tipo_Carga=ptipo_Carga, codigo_Pbip=pcodigo_Pbip, color_Casco=pcolor_Casco, 
		emp_Remolcadores=pemp_Remolcadores, num_Remolcadores=pnum_Remolcadores, emp_Pilotos=pemp_Pilotos, 
		num_Pilotos=pnum_Pilotos, num_Amarradores=pnum_Amarradores, peso_Muerto=ppeso_Muerto, 
		calado_Construccion=pcalado_Construccion, tipo_Cabo=ptipo_Cabo
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Capt_PermisoMovimiento_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Capt_PermisoMovimiento_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;
